package com.nio.demo.testdemo;

public class Test {
    private String sex;
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public    void printStr(){
          int  num=12;
        System.out.println("外部类方法+局部变量num"+num);
    }

    /**
     *
     * 创建内部对象调用内部类方法达到使用外部类访问内部类的目的
     *
     *
     */
    public void  interClass(TestDemo testDemo1){

       testDemo1.printName();

    }


    class TestDemo {
        public String getNamme() {
            return namme;
        }

        public void setNamme(String namme) {
            this.namme = namme;
        }

        private  String namme;
        public void  printName(){
            System.out.println("NAME==="+namme);
        }

        /**
         *
         * 创建内部类方法来访问外部类的方法，以达到使用内部类对象访问外部对象属性的目的。
         *
         */
        public void outClass(){
            printStr();
            System.out.println("sex==="+getSex());
        }

    }
    static class testDemo2{
        private int age;

        public void setAge(int age) {
            this.age = age;
        }

        public int getAge() {
            return age;
        }
        public void pringAge(){
            System.out.println("age==="+getAge());
        }
    }


    public static void main(String[] args) {
        Test test= new Test();

        Test.TestDemo testdemo=test.new TestDemo();//访问内部类必须通过外部类的引用创建内部类。
        test.setSex("男");
        testdemo.setNamme("hahha");
        testdemo.printName();
        testdemo.outClass();//访问外部类需要在内部类定义访问外部类的方法。直接访问不到。

        test.interClass(testdemo);//利用外部类访问内部类
        Test.testDemo2 testDemo2=new testDemo2();//静态内部类
        testDemo2.setAge(13);
        testDemo2.pringAge();

    }
}
